##########################################################################################
# Appendix Classifier Statistics
##########################################################################################
# Content
##########################################################################################
# Sentiment Descriptive Plots
##########################################################################################
# Contents
##########################################################################################
# 1) Dependencies
# 2) Intro
# 3) Table Ensemble Model Evaluation (SDM)
##########################################################################################
# 1) Dependencies
##########################################################################################
#Libraries
suppressPackageStartupMessages(library(readxl))
suppressPackageStartupMessages(library(readr))
suppressPackageStartupMessages(library(tidyr))
suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(mda))
suppressPackageStartupMessages(library(kableExtra))
##########################################################################################
# 2) Intro
##########################################################################################
rm(list = ls())

args = commandArgs()

scriptName = args[substr(args,1,7) == '--file=']

if (length(scriptName) == 0) {
  scriptName <- rstudioapi::getSourceEditorContext()$path
} else {
  scriptName <- substr(scriptName, 8, nchar(scriptName))
}

pathName = substr(
  scriptName, 
  1, 
  nchar(scriptName) - nchar(strsplit(scriptName, '.*[/|\\]')[[1]][2])
)

setwd(pathName)
getwd()
parent_path <- getwd()


##########################################################################################
# 3) Table Ensemble Model Evaluation (SDM)
##########################################################################################
perfdf<- suppressMessages(read_csv("../data/PerClassEnsemblePerformance.csv"))
perfdf2<- suppressMessages(read_csv("../data/PerClassEnsemblePerformance_fr.csv"))

perfdf <- perfdf %>% select(classnames, precision, recall, f1) %>% arrange(desc(as.numeric(precision)))
perfdf2 <- perfdf2 %>% select(classnames, precision, recall, f1) %>% arrange(desc(as.numeric(precision)))

overall <- c("Durchschnitt", mean(perfdf$precision),  mean(perfdf$recall), mean(perfdf$f1))
overall2 <- c("Durchschnitt", mean(perfdf2$precision),  mean(perfdf2$recall), mean(perfdf2$f1))

perfdf <- rbind(perfdf,overall)
perfdf2 <- rbind(perfdf2,overall2)

colnames(perfdf) <- c("Topic", "Precision (De)", "Sensitivity (De)", "F1-Score (De)")
colnames(perfdf2) <- c("Topic", "Precision (Fr)", "Sensitivity (Fr)", "F1-Score (Fr)")

perfdf[,c(2,3,4)] = apply(perfdf[,c(2,3,4)], 2, function(x) as.numeric(as.character(x)))
perfdf2[,c(2,3,4)] = apply(perfdf2[,c(2,3,4)], 2, function(x) as.numeric(as.character(x)))

perfdf <- full_join(perfdf, perfdf2, by = "Topic")

themen <- c("Agriculture", "Healtcare", "Education & Culture", "Environment & Energy",
            "Public Services / Infrastructure", "Economy", "Immigration & Asylum",
            "Finance & Taxes", "Political System", "Social security & Welfare state",
            "Gender issues & Discrimination", "Law & Order", 
            "International Relations",  "Other Problems", "EU / Europe",  
            "Labour market", "Regions & National Cohesion", "Not Classified", "All Topics together")

perfdf$Topic <- themen

perfdf_rounded <- perfdf %>% mutate_if(is.numeric, round, digits=3)

stargazer::stargazer(perfdf_rounded, summary = F, header = F, type = "latex", digits = 2,
                     out = "../tables_appendix/PerClassEnsemblePerformance_TechRep.tex")
##########################################################################################
